package org.streets.workflow.model.net;

import org.streets.workflow.model.AbstractElement;
import org.streets.workflow.model.WFProcess;

/**
 * 工作流网的边
 */
@SuppressWarnings("serial")
public class WFEdge extends AbstractElement {
    /**
     * 转移(或者循环)的源节点。<br>
     * 转移的源节点可以是StartNode、 Activity或者Synchronizer。<br>
     * 循环的源节点必须是Synchronizer或者EndNode，同时循环的目标节点必须是循环源节点的前驱。
     */
    protected WFNode fromNode = null;

    /**
     * 转移(或者循环)的目标节点。<br>
     * 转移的终止目标可以是EndNode、 Activity或者Synchronizer。<br>
     * 循环的目标节点必须是Synchronizer或者StartNode。
     */
    protected WFNode toNode = null;

    /**
     * 转移（或者循环）的启动条件
     */
    protected String condition = null;
    

    public WFEdge(){
        
    }

    public WFEdge(WFProcess workflowProcess, String name) {
        super(workflowProcess, name);
    }

    /**
     * 返回转移(或者循环)的启动条件，转移（循环）启动条件是一个EL表达式
     * @return
     */
    public String getCondition() {
        return condition;
    }

    /**
     * 设置转移(或者循环)条件
     * @param condition
     */
    public void setCondition(String condition) {
        this.condition = condition;
    }

    /**
     * 返回转移(或者循环)的源节点
     * @return
     */
    public WFNode getFromNode() {
        return fromNode;
    }

    public void setFromNode(WFNode fromNode) {
        this.fromNode = fromNode;
    }
    /**
     * 返回转移(或者循环)的目标节点
     * @return
     */
    public WFNode getToNode() {
        return toNode;
    }

    public void setToNode(WFNode toNode) {
        this.toNode = toNode;
    }
}
